/* 
 * File:   BlinnphongShader.h
 * Author: brady
 *
 * Created on August 9, 2011, 7:33 PM
 */

#ifndef BLINNPHONGSHADER_H
#define	BLINNPHONGSHADER_H

#include <shaders/Shader.h>
#include <shaders/LambertianShader.h>
#include <dto/IntersectionResult.h>
#include <dto/RenderParams.h>

using namespace std;

class BlinnphongShader : public LambertianShader {
public:
    BlinnphongShader();
    BlinnphongShader(const Vector3D& specular, double phongExp, double r);
    BlinnphongShader(const BlinnphongShader& orig);
    virtual ~BlinnphongShader();
    Vector3D shade(IntersectionResult& result) const ;
    void setPhongExponent(double pe){phongExponent = pe;}
    void setReflectivity(double r){reflectivity = r;}
    void setSpecularColor(const Vector3D& c){specularColor = c;}

protected:
    Vector3D computeHighlights(IntersectionResult& result) const;
    Vector3D computeReflections(IntersectionResult& result) const;
    Vector3D specularColor;
    double phongExponent;
    double reflectivity;
private:


};

#endif	/* BLINNPHONGSHADER_H */

